package cn.mandy.sysadmin.constant;

//select * from
//        (
//        select -1 as line_nbr, 'package cn.mandy.sysadmin.constant;\n\npublic interface MandyConstant {' as content
//        union all
//        select id * 100000 as line_nbr, concat('/**\n* name:', name, '\n* label:', '\n* remark:', remark, '\n*/\n   final class ', mandy_const, '{') as content from mandy_dict
//        union all
//        select a.id * 100000 + b.id as line_nbr, concat('   public static final String ', b.name, ' = "', b.value, '"; // label:', b.label, ' remark:', b.remark) as content from mandy_dict a, mandy_dict_item b
//        where a.id = b.dict_id
//        union all
//        select id * 100000 + 10000 as line_nbr, concat('} \n') as content from mandy_dict
//        union all
//        select 99999999 as line_nbr, '}' as content
//        ) all_line order by line_nbr

/**
 * 由以上SQL自动生成
 * @author zhongwt
 */
public interface MandyConstant {
    /**
     * name:perm_type
     * label:
     * remark:标识各种权限资源类型
     */
    final class PermType{
        public static final String FUNCTION = "0"; // label:功能 remark:按钮功能级别
        public static final String PANEL = "1"; // label:面板 remark:页面（面板）级别
        public static final String MENU_GROUP = "2"; // label:菜单组 remark:只是组织菜单会用到
    }

    /**
     * name:user_state
     * label:
     * remark:标识用户各个使用状态
     */
    final class UserState{
        public static final String INITIAL = "0"; // label:新建 remark:用户创建后的初始状态
        public static final String CHECKING = "1"; // label:待审核 remark:用户在新建状态登录完善个人信息提交后，进入待审状态，审核完成才可正常使用系统功能
        public static final String NORMAL = "2"; // label:正常 remark:正常使用状态
        public static final String LOCKED = "3"; // label:异常锁定 remark:密码连续三次错误将被锁定, 被锁的用户只能由权限操作员重置密码, 或者限定一段时间(一天)后，自动恢复为正常状态
        public static final String RESET = "9"; // label:密码重置 remark:重置状态下的用户,只有更新密码功能,而且更新后要再次审核
    }

    /**
     * name:audit_state
     * label:
     * remark:标识数据的审核(审计)状态
     */
    final class AuditState{
        public static final String UNCHECKED = "0"; // label:未审核 remark:数据新创建,未审核状态
        public static final String CHECKED = "1"; // label:已审核 remark:数据通过审核,正常使用状态
        public static final String UPDATING = "2"; // label:有更新 remark:已有的数据正在使用,又有新的更改，正在新老交替状态
    }

    /**
     * name:user_is_enabled
     * label:
     * remark:标识用户在职与离职状态,可不可使用本系统
     */
    final class UserIsEnable{
        public static final String DISABLED = "0"; // label:离职 remark:已离职的用户, 不再允许使用本系统
        public static final String ENABLED = "1"; // label:在职 remark:在职的用户
    }

    /**
     * name:yes_or_no
     * label:
     * remark:布尔值是或否
     */
    final class YesOrNo{
        public static final String NO = "0"; // label:否 remark:布尔值否(字符串'0')
        public static final String YES = "1"; // label:是 remark:布尔值否(字符串'1')
    }

    /**
     * name:security_level
     * label:
     * remark:安全级别参数配置
     */
    final class SecurityLevel{
        public static final String TOP_SECRET = "1"; // label:绝密级 remark:TOP_SECRET:绝密级
        public static final String SECRET = "2"; // label:机密级 remark:SECRET:机密级
        public static final String CONFIDENTIAL = "3"; // label:秘密级 remark:CONFIDENTIAL:秘密级
        public static final String UNCLASSIFIED = "4"; // label:普通级 remark:UNCLASSIFIED:普通级
        public static final String PUBLIC = "5"; // label:已公开 remark:PUBLIC:已公开
    }

    /**
     * name:dept_rang
     * label:
     * remark:单位部门参数配置
     */
    final class DeptRang{
        public static final String ALL = "1"; // label:所有的 remark:部门范围, ALL:所有的, USER_DEPT:用户所属部门,USER_DEPT_EXT:所属部门及下级部门
        public static final String USER_DEPT = "2"; // label:用户所属部门 remark:部门范围, ALL:所有的, USER_DEPT:用户所属部门,USER_DEPT_EXT:所属部门及下级部门
        public static final String USER_DEPT_EXT = "3"; // label:所属部门及下级部门 remark:部门范围, ALL:所有的, USER_DEPT:用户所属部门,USER_DEPT_EXT:所属部门及下级部门
    }

    /**
     * name:host_is_enabled
     * label:
     * remark:监控--主机状态, 正常或失效
     */
    final class HostIsEnabled{
        public static final String ENABLED = "1"; // label:正常 remark:主机状态正常,cfg_job_crontab.iz_enable 也有用到
        public static final String DISABLED = "0"; // label:失效 remark:主机状态失效
    }

    /**
     * name:job_is_enabled
     * label:
     * remark:监控--作业状态, 上线或未上线
     */
    final class JobIsCanceled{
        public static final String ENABLED = "1"; // label:已上线 remark:进程状态正常
        public static final String DISABLED = "0"; // label:未上线 remark:进程状态失效
    }

    /**
     * name:job_type
     * label:
     * remark:作业类型
     */
    final class JobType{
        public static final String DAEMON_GROUP = "0"; // label:守护进程作业组 remark:守护进程作业组
        public static final String DAEMON = "1"; // label:守护进程作业 remark:守护进程作业
        public static final String NORMAL_GROUP = "2"; // label:普通作业组 remark:普通作业组
        public static final String NORMAL = "3"; // label:普通作业 remark:普通作业
    }

    /**
     * name:serial_processing
     * label:
     * remark:普通作业的运行方式，串行还是并行
     */
    final class SerialProcessing{
        public static final String PARALLEL = "0"; // label:并行 remark:并行运行
        public static final String SERIAL = "1"; // label:串行 remark:串行运行
    }

    /**
     * name:create_mode
     * label:
     * remark:任务创建的类型或者说模式
     */
    final class CreateMode{
        public static final String SCHEDULE = "0"; // label:调度计划 remark:调度计划--包括周期模式和单次模式
        public static final String RERUN = "1"; // label:重跑任务 remark:调度重跑
        public static final String MANUAL = "2"; // label:手动模式 remark:手动模式--即时启动
    }

    /**
     * name:shutdown_mode
     * label:
     * remark:关闭模式
     */
    final class ShutdownMode{
        public static final String AUTO = "0"; // label:自动结束 remark:关闭模式--自动结束
        public static final String COMMAND = "1"; // label:停止运行命令 remark:关闭模式--停止运行命令
    }

    /**
     * name:task_status
     * label:
     * remark:任务状态
     */
    final class TaskStatus{
        public static final String INIT = "0"; // label:未运行 remark:任务的初始状态, 生成任务的时候, 所有的任务都是这个状态
        public static final String READY_GO = "1"; // label:准备启动 remark:任务的启动时间已经到达, 且没有启动依赖或者已经满足启动依赖条件的时候, 变成这个状态
        public static final String RUNNING = "2"; // label:正在运行 remark:当前任务正在运行。 如果是普通任务, 在发出启动命令后, 即由准备启动状态变成正在运行, 如果是守护进程任务, 启动命令执行后还要后台检测是否满足ps_key_wrods来决定
        public static final String FINISHED = "3"; // label:正常结束 remark:普通任务启动后, 由mandyctl保存pid, 并每个循环都检查是否结束, 检测到结束就置状态为这个值, 返回码记录在return_code.守护进程任务, 由mandyctl发出结束命令, 并在随后检测到进程终止, 也是这个值.
        public static final String MISSED_STOP = "4"; // label:错过停止 remark:发生在mandyctl异常, 主机宕机或者其它情况没有运行mandyctl, 从而错过执行停止命令, proc_task_process_launcher里判断.
        public static final String UNEXPECT_STOP = "5"; // label:异常终止 remark:守护进程任务, mandyctl没有发出结束命令就停止了, 就是异常终止
        public static final String MISSED_START = "6"; // label:错过启动 remark:与状态4一样, 发生在mandyctl异常
        public static final String WAITTING_GO = "7"; // label:检测依赖 remark:正在检测依赖条件, 依赖条件成立则进入准备启动状态
        public static final String OVERTIME = "8"; // label:作业超时 remark:普通作业设置一个最长运行时间, 超过此阀值就被设置为作业超时状态, 作业超时也发生在mandyctl启动作业后, 自身core掉的情况.
        public static final String READY_SHUTDOWN = "9"; // label:准备停止 remark:对于守护型任务, 到达停止时间就会进入此状态
        public static final String ENDING = "w"; // label:正在停止 remark:停止命令已经执行, 等待进程结束
        public static final String BEGING = "c"; // label:正在启动 remark:启动命令已经执行, 等待进程的运行，其间会不停地检测和运行启动命令.
        public static final String CANCELED = "e"; // label:任务取消 remark:还没有运行任务命令, 就接到任务取消指令
        public static final String STOP_FAILED = "d"; // label:无法停止 remark:正在停止状态下的任务超过1分钟也没停止, 就变成这个状态.
    }

    /**
     * name:action_type
     * label:
     * remark:动作类型
     */
    final class ActionType{
        public static final String START = "0"; // label:启动 remark:启动,  仅执行启动命令START_COMMAND
        public static final String STOP = "1"; // label:停止 remark:停止, 仅执行停止命令STOP_COMMAND
        public static final String START_STOP = "2"; // label:启停 remark:启动和停止, 先执行START_COMMAND, 运行一段时间后执行STOP_COMMAND
    }

    /**
     * name:conflict_flag
     * label:
     * remark:冲突标志
     */
    final class ConflictFlag{
        public static final String ACCORD = "0"; // label:一致 remark:状态一致的
        public static final String CONFLICT = "1"; // label:不一致 remark:状态一致的, 不会自动重启
    }

    /**
     * name:scheduler_type
     * label:
     * remark:计划类型
     */
    final class SchedulerType{
        public static final String SINGLE = "0"; // label:单次任务 remark:生成单次任务, 时间一过，状态自动变失效
        public static final String CIRCLE = "1"; // label:循环任务 remark:生成按周期循环的多次任务
    }

    /**
     * name:depend_type
     * label:
     * remark:依赖类型
     */
    final class DependType{
        public static final String RETURN_CODE = "0"; // label:返回码 remark:依赖于作业结束里返回系统的返回码
        public static final String STATUS = "1"; // label:运行状态 remark:依赖于作业当前状态, 一般选择正在运行或正常结束
    }

}